/**
 * 配置
 * */
package org.zmhhxl.sample3.oauth2.a.configure;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.DelegatingPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

import java.util.HashMap;
import java.util.Map;

//@Configuration
public class PasswordEncoderConfig {

//   @Bean
//   public PasswordEncoder passwordEncoder() {
//      // 创建一个DelegatingPasswordEncoder实例
//      Map<String, PasswordEncoder> encoders = new HashMap<>();
//      encoders.put("bcrypt", new BCryptPasswordEncoder());
//
//      // 设置默认的PasswordEncoder
//      DelegatingPasswordEncoder delegatingPasswordEncoder = new DelegatingPasswordEncoder("bcrypt", encoders);
//
//      // 如果需要，可以在这里调整BCryptPasswordEncoder的参数，如增加hash迭代次数
//      // 例如: ((BCryptPasswordEncoder) delegatingPasswordEncoder.getDefaultPasswordEncoder()).setStrength(12);
//
//      return delegatingPasswordEncoder;
//   }

//   @Bean
//   public PasswordEncoder passwordEncoder2() {
//      return new BCryptPasswordEncoder();
//   }

   /**
    * 创建并返回一个密码编码器实例。
    *
    * 使用DelegatingPasswordEncoder作为密码编码器，它是Spring Security提供的一种策略，
    * 可以根据存储的密码的编码方式自动选择合适的编码器进行密码验证。
    * 这种方式有利于处理历史密码，因为新的密码可能使用更安全的编码策略。
    *
    * @return PasswordEncoder 实例，用于编码和验证用户密码。
    */
//   @Bean
//   public PasswordEncoder passwordEncoder() {
//      return PasswordEncoderFactories.createDelegatingPasswordEncoder();
//   }

}
